中秋連假真可怕,今天沒時間拍影片,改使用文字筆記的方式結束這一天><
使用者從到後端的資料,可能不符合我們要求的格式,例如商品名稱不能空,商品價格不能小於0。
你可能會想用if()來判斷,不過ASP.NET Core有提供資料驗證的功能,是以Attribute的方式來使用,放在欲驗證欄位的前方即可會對該欄位進行驗證。
這邊列出幾個ASP.NET Core內建的資料驗證Attribute
[Compare]:驗證模型中的兩個屬性是否相符。
[EmailAddress]:驗證是否符合電子信箱格式。
[Phone]:驗證是否符合電話號碼格式。
[Range]:驗證值是否落在指定的範圍內。
[RegularExpression]:驗證值是否符合指定的正則運算式。
[Required]:驗證欄位為必填欄位。
詳細內容可以看文件
內建屬性
System.ComponentModel.DataAnnotations 命名空間
在Action中,可以使用此方式來檢查是否完全符合驗證,若符合再執行
if (ModelState.IsValid)
{
//符合則執行...
}
而在View中,如果有載入_ValidationScriptsPartial.cshtml
的話,可以使用此方式顯示驗證失敗的錯誤訊息
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<span asp-validation-for="Name" class="text-danger"></span>
載入方式
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
[ModelMetadataType(typeof(ProductMetadataType))]
public partial class Product
{
}
public class ProductMetadataType
{
[Display(Name = "商品名稱")]
public string Name { get; set; }
[Display(Name = "價格")]
public decimal Price { get; set; }
}
```